package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * 1、整合MyBatis-Plus
 *      1）、导入依赖
 *      <dependency>
 *             <groupId>com.baomidou</groupId>
 *             <artifactId>mybatis-plus-boot-starter</artifactId>
 *             <version>3.2.0</version>
 *      </dependency>
 *      2）、配置
 *          1、配置数据源；
 *              1）、导入数据库的驱动。https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-versions.html
 *              2）、在application.yml配置数据源相关信息
 *          2、配置MyBatis-Plus；
 *              1）、使用@MapperScan
 *              2）、告诉MyBatis-Plus，sql映射文件位置
 *
 * 2、逻辑删除
 *  1）、配置全局的逻辑删除规则（省略）
 *  2）、配置逻辑删除的组件Bean（省略）
 *  3）、给Bean加上逻辑删除注解@TableLogic
 *
 * 3、JSR 数据效验
 *  1） 给Bean加效验注解 javax.validation.constraints
 *
 *  2） 开启效验功能@Valid
 *   效果：效验错误以后会有默认的响应 可以修改(message=“” )
 *
 *   3) 给效验的bean后紧跟一个BindingResult 就可以获取到效验的结果
 *
 *    4） 1.@NotNull(message = "修改必须指定",groups = {AddGroud.class})
 *    给效验注解标注什么情况需要进行效验
 *    2.@Validated({AddGroud.class}) 指定了分组的效验
 *    3.默认么有指定分组的效验注解@NotBlank 在分组效验的情况下不生效 .@Validated
 *
 *   4) 统一的异常的处理
 *   1.ControllerAdvice
 *   2.使用@ExceptionHandler标注方法可以处理异常
 */
//@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@EnableDiscoveryClient
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
